/*
* 分饼干：设小飞同学家里有3个孩子，每个孩子的食量不一样，家里有一袋饼干，每块饼干的质量不一样大，求最多满足食量孩子的数量
*   child = [1,2,3] //孩子食量
*   cookie = [1,5,2] //饼干质量
*   1.一个饼干不能分着吃，也不能一个孩子吃多块，只能一个孩子吃一块
*   2.每个孩子吃饼干必须吃够量，否则就不吃，即饼干量 >= 孩子的食量
*   3.尽可能满足更多孩子的食量
*
* 思路：
*   先拿最小的饼干喂给食量最小的孩子，不够再增加饼干量，直到满足该孩子的食量，够再继续从剩下孩子中找到食量最小的孩子，喂剩下质量最小的饼干
*   给饼干质量排序，给孩子食量排序
*
* */

//贪心算法：一般要先做排序，排完序之后才能按照步骤来

function distributionCookie(child,cookie){
    //先排序，再比较
    //排序部分
    child.sort((a,b) =>  //给孩子的食量排序 从小到大
        a - b
    )
    cookie.sort((a,b) => //给饼干的质量排序 从小到大
        a - b
    )

    let childIndex = 0 //孩子的下标索引
    let cookieIndex = 0 //饼干的下标索引
    let count = 0 //食量被满足的孩子数量

    //比较部分
    while(childIndex < child.length && cookieIndex < cookie.length){ //当孩子没有遍历完并且饼干没有遍历完的时候，九一致进行西门操作
        //分情况，饼干够吃 和 饼干不够吃的情况
        if(cookie[cookieIndex] >= child[childIndex]){ //当前饼干量能满足孩子食量的情况
            count++ //被满足孩子的数量++
            cookieIndex++ //饼干的下标索引++（因为这块饼干已经被吃了，下次循环就遍历要下一块了）
            childIndex++ //孩子的下标索引++（因为这个孩子已经满足吃饱了，下次遍历就是下一个没吃饱的孩子）
        }else{ //否则就是当前这块饼干不够满足这个孩子的食量
            cookieIndex++ //饼干的下标索引++（吃不饱就继续吃下一块，直到这个孩子吃饱为止，所以饼干要变，孩子暂时不变）
        }
    }
    return count //最后返回被满足孩子的数量即可
}

let childEat = [1,3,2,4,8,6,7] //每个孩子食量
let cookie = [2,4,1,5,3,6,9] //每块饼干质量

distributionCookie(childEat,cookie)